Every program contains knowledge about some problem. A payroll program, for example, has knowledge about pay rate, deduction, and tax schedules. It also includes "common sense" knowledge about business practices and the number of hours in a week or days in a month. Expert systems are different from conventional programs in that they represent the knowledge in a high-level form. More particularly, expert systems are problem solving systems that reach expert or at least highly competent levels of performance. Instead of encoding knowledge in low-level statements, they store it in a knowledge base of rules and facts that stay close to the way people think about a problem.
What distinguishes an expert system from a conventional program is not just its expertise, but the way that the expertise is stored and processed. A payroll program, for example, certainly has more expertise about tax rate and deductions than most people, but it applies the expertise in a rigid, inflexible way. Furthermore, it cannot explain its knowledge or answer questions about its use: an employee who believes that the wrong tax rate was applied cannot ask the payroll program why it made a certain deduction. An expert system behaves more like an intelligent assistant. It can apply its knowledge in flexible ways to novel kinds of problems. Whenever it reaches a conclusion, the user can ask how that conclusion was reached and what rules were used to deduce it. For further discussion, see Walker et al. "Expert systemS AND PROLOG" (Addison-Wesley Publishing Company Inc. 1987), which is hereby incorporated by reference.
It is convenient to divide the development of an expert system into three main modules:
(1) a rule base, PA1 (2) an inference engine, PA1 (3) a user interface.
A rule base comprises the knowledge that is specific, to the domain of applications, including such things as simple facts about the domain, rules that describe relations or phenomena in the domain, and possibly also methods, heuristics and ideas for solving problems in this domain. An inference engine knows how to actively use the knowledge in the rule base. A user interface caters for smooth communication between the user and the system, also providing the user with an insight into the problem solving process carried out by the inference engine. It is convenient to view the inference engine and the interface as one module, usually called an expert system shell, or simply a shell for brevity. For further information, see Bratko, "PROLOG PROGRAMMING FOR ARTIFICIAL INTELLIGENCE" (Addison-Wesley Publishing Company, Inc. 1986), which is hereby incorporated by reference.
Expert systems have been in existence for some time but, until recently, were only found in the large microcomputer area. As the power and speed of the microcomputer increased, a number of these expert systems have been ported to the microcomputer environment. Expert system shells have been designed, allowing users to create easier implementa-tions of the rule base, but there still exists two severe limitations to expert systems (especially when used in conjunction with microcomputers); they require a tremendous amount of memory, and they have been limited to dedicated use by a single user.
The advent of the 80386 microprocessor chip from Intel, and other high speed processor CPUs and the continued reduction of hardware costs in the microcomputer arena, has recently created a new flurry of interest and demand for knowledge-based systems at substantially reduced prices compared to earlier versions.
There are limitations with the present expert systems. As stated, they are still dedicated to single machines, limiting access to the rule base. This limitation creates another problem, which is expensive, repetitive hardware costs if one requires multiple use of the rule base, because the system needs to be duplicated on multiple single-user systems or run as separate, dedicated programs or tasks on a multi-user-based computer.
Finally, access has usually been limited to a single interface of a keyboard and a screen in a single language (English, Spanish, etc.). This limitation creates many access problems for the rule base, including inaccessibility to the system by many users and also severe limitations as to the type of interface that user could choose to communicate with the program.
With the foregoing in mind, there currently exists a need to provide an expert system design that allows multiple users to use and share the same system without duplicating it for each instance of use.
More particularly, the expert system must allow multiple users to share the same rule base, so multiple instances of the rule base need not be created.
There is also a need to allow provisions in the rule base to allow for multiple user interfaces so users can interface with the rule base through different languages, where the rule base can know and support, through additional applicational software, the proper communication requirements.